/**
 * 项目名称:
 *
 * @Author: 夏国倩
 * @Date: 2023/10/16 10:27
 * @Copyright
 */
package JDBC;
import java.sql.*;
public class JDBCtest1 {
    public static void main(String[] args) {
        Statement stmt=null;
        //第一步：注册驱动
        Connection conn = null;
        try {
            Driver driver = new com.mysql.cj.jdbc.Driver();//mysql驱动，多态，父类引用
            //Driver driver1 = new Oracle.jdbc.drive.Driver();//Oracle驱动
            DriverManager.registerDriver(driver);
            //第二步：获取连接
            /*
            url:统一资源定位符（网络中某个资源的绝对路径）
            https://www.baidu.com/  这就是URL
            url包括哪几个部分：协议、IP、PORT、资源名

            http://192.16.200.7:80/index.html
            http:// 通信协议
            192.16.200.7 服务器IP地址
            80服务器上软件的端口
            index.html 是服务器上某个资源名

            jdbc:mysql://127.0.0.0:3306/base1
            jdbc:mysql:// 协议
            127.0.0.1 IP地址
            3306 mysql数据库的端口号
            base1 具体的数据库名字

            说明：localhost和127,0,0,1都是本机IP地址

            通信协议：是通信之前就提前定好的数据传送格式
            数据包具体怎么传数据，格式提前定好的

            Oracle的URL：
            jdbc:oracle:thin:@localhost:1521:orcl

             */
            String url = "jdbc:mysql://127.0.0.1:3306/base1?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
            String user = "root";
            String password = "123456";
            conn = DriverManager.getConnection(url, user, password);
            System.out.println(conn);
            //第三步：获取数据库操作对象（Statement专门执行sql语句）
            stmt = conn.createStatement();
            //第四步：执行SQL语句（DQL,DML……..）
            String sql="insert into user(username) values('jack')";
            //专门执行DML语句的（insert update delete）
            //返回值是“影响数据库中的记录条数”
            int count = stmt.executeUpdate(sql);
            System.out.println(count==1?"保存成功！":"保存失败！");
            //第五步：处理查询结果集
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //第六步：释放资源
            //为了保证资源一定能得到释放，在finally语句块中关闭资源
            //并且要遵循从小到大的顺序依次关闭
            try{
                if (stmt != null){
                    stmt.close();
                }
            }catch (SQLException e){
                throw new RuntimeException(e);
            }
            try{
                if (conn != null) {
                    conn.close();
                }
            }catch (SQLException e){
                throw new RuntimeException(e);
            }
        }
    }
}
